package com.example.myapplication

import com.example.mylibrary.network.BaseCallBack
import com.example.mylibrary.network.BaseData
import retrofit2.Call
import retrofit2.Response

abstract class CurrentCallback<T : BaseData> : BaseCallBack<T>() {
    override fun onResponse(call: Call<T>, response: Response<T>) {
        try {
            val body = response.body()
            if (body == null) {
                onFailure(call, IllegalAccessException("访问网络失败,稍后再试"))
                return
            }
            // 针对各种请求结果状态来判断不同的情况(取决于后台的设置状态)
            // 下面只处理一种情况 0 参数错误 1 正常数据 -1 登录超时
            when (body.status) {
                "no" -> {
                    // 请求数据异常，将异常信息填充到异常中
                    onFailure(call, IllegalAccessException(body.msg))
                }

                "yes" -> {
                    // 正常返回数据状态，将数据传递过去
                    onSuccess(body)
                }
            }
        } catch (e: Exception) {
            // 如果有异常,将异常推到异常结果中
            e.printStackTrace()
            e.cause?.let { onFailure(call, it) }
        }
    }
}